Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #1952, patch for recursive event loop #1954

Merged
merged 1 commit into from
Dec 6, 2021

Conversation

jphickey
Copy link
Contributor

Describe the contribution
Adds CFE_SB_RequestToSendEvent/CFE_SB_FinishSendEvent wrappers around all events generated by CFE_SB_TransmitMsgValidate. This is avoids the potential for a recursive loop if configured improperly.

Fixes #1952

Testing performed
Build and sanity check CFE, run all tests.

Expected behavior changes
Tested with the mis-configuration where EVS had an invalid MID and confirmed that the system does not get into a recursive loop and segfault anymore.

System(s) tested on
Ubuntu

Additional context
This is just a minimal patch that does not change current architecture but avoids a crash. A better fix for future versions would be to put this recursion protection into EVS in a more generic manner.

Contributor Info - All information REQUIRED for consideration of pull request
Joseph Hickey, Vantage Systems, Inc.

@jphickey
Copy link
Contributor Author

Pushed to fix clang-format errors.

@jphickey jphickey added the CCB:Ready Ready for discussion at the Configuration Control Board (CCB) label Sep 29, 2021
@astrogeco astrogeco added CCB:Approved Indicates code review and approval by community CCB and removed CCB:Ready Ready for discussion at the Configuration Control Board (CCB) labels Sep 29, 2021
@astrogeco
Copy link
Contributor

https://github.com/nasa/cFS/wiki/Community-CCB-Agenda:-September-29-2021 APPROVED

  • caused by a misconfiguration
  • would benefit from re-architecting

@astrogeco astrogeco closed this Sep 29, 2021
@astrogeco astrogeco reopened this Sep 29, 2021
astrogeco added a commit to astrogeco/cFE that referenced this pull request Oct 29, 2021
@astrogeco
Copy link
Contributor

@jphickey My merge of this one is causing the test failure
See astrogeco@44312f0

[  TTF] 127.027 sb_UT.c:4610 - CFE_SB_DeletePipe(PipeId) (0xffffffffca000003) == CFE_SUCCESS
[  END] 127 SB_SpecialCases.TransmitMsgPaths_Nomina TOTAL::27    PASS::26    FAIL::0     MIR::0     TSF::0     TTF::1     WARN::0   

astrogeco added a commit to astrogeco/cFE that referenced this pull request Nov 2, 2021
astrogeco added a commit to astrogeco/cFS that referenced this pull request Nov 2, 2021
Adds CFE_SB_RequestToSendEvent/CFE_SB_FinishSendEvent wrappers around
all events generated by CFE_SB_TransmitMsgValidate.  This is avoids
the potential for a recursive loop if configured improperly.
@jphickey
Copy link
Contributor Author

jphickey commented Nov 2, 2021

Updated to correct a coverage test issue, the test case was invoking CFE_SB_TransmitBuffer instead of CFE_SB_TransmitMsg. Can't really call CFE_SB_TransmitBuffer on a stack object because there is an extra descriptor that is supposed to be there, which will be missing.

astrogeco added a commit to astrogeco/cFS that referenced this pull request Nov 17, 2021
Combines:

nasa/cFE#2001
nasa/osal#1191
nasa/PSP#318

Includes:

- nasa/cFE#1663, Use cfe time clock state enum t in cmd/tlm and handling
- nasa/cFE#1973, EVS functional test add for different event types
- nasa/cFE#1954, Patch for recursive event loop
- nasa/cFE#1911, CFE_ES_MemAddOff structure to associated CFE_ES_MemAddress_t and CFE_ES_MemOffset_t
- nasa/cFE#1986, Avoid aliasing warnings
- nasa/cFE#1975, Message ID type improvements
- nasa/cFE#1974, CFE_SB_ValueToMsgId/MsgIdToValue wrappers
- nasa/cFE#1663, Use CFE_TIME_ClockState_Enum_t in cmd/tlm and handling
- nasa/cFE#1995, Consolidate repeated MSG stub setup in sb_UT
- nasa/cFE#1873, Return type conversions in CFE_ES_GetTaskName
- nasa/cFE#1966, Better message type pointer conversion
- nasa/cFE#2002, Replacing hardcoded message limit in TIME services
- nasa/cFE#1909, Use macro in CFE_ResourceId_IsDefined
- nasa/cFE#1999, Checking against IsNewOffset only

- nasa/osal#1186, Add Duplicate Check to Local Unit Test
- nasa/osal#1178, Rename OS_XXXTime to OS_XXXLocalTime in comments
- nasa/osal#1168, Fix vxWorks intLib stub aliasing issue
- nasa/osal#1169, Recognize ifdef __cplusplus
- nasa/osal#1180, Remove extern in stub prototypes
- nasa/osal#1112, Add typedef for OSAL status codes

- nasa/PSP#301, Sleep before exit when printing
- nasa/PSP#314, Check the address in PSP get segment stubs

- nasa/elf2cfetbl#89, Check get_sh_entsize(SectionHeader) value

- nasa/cFS-GroundSystem#197, Free Address Info for Leak

- nasa/sch_lab#95, use separate address variable

- nasa/sch_lab#94, Use CFE_MSG_PTR conversion macro
- nasa/sample_app#157, Use CFE_MSG_PTR conversion macro
- nasa/ci_lab#95, Use CFE_MSG_PTR conversion macro
- nasa/to_lab#107, Use CFE_MSG_PTR conversion macro

- nasa/elf2cfetbl#93, Check get_sh_entsize(SectionHeader) value

Co-authored by: Jacob Hageman [email protected]
Co-authored by: Joseph Hickey [email protected]
Co-authored by: Ariel Adams [email protected]

Co-authored by: Paul [email protected]
Co-authored by: Zachary Gonzalez [email protected]
Co-authored by: Sam Price [email protected]
Co-authored by: Shefali Sharma [email protected]
astrogeco added a commit to astrogeco/cFS that referenced this pull request Nov 18, 2021
Combines:

nasa/cFE#2001
nasa/osal#1191
nasa/PSP#318

Includes:

- nasa/cFE#1663, Use cfe time clock state enum t in cmd/tlm and handling
- nasa/cFE#1973, EVS functional test add for different event types
- nasa/cFE#1954, Patch for recursive event loop
- nasa/cFE#1911, CFE_ES_MemAddOff structure to associated CFE_ES_MemAddress_t and CFE_ES_MemOffset_t
- nasa/cFE#1986, Avoid aliasing warnings
- nasa/cFE#1975, Message ID type improvements
- nasa/cFE#1974, CFE_SB_ValueToMsgId/MsgIdToValue wrappers
- nasa/cFE#1663, Use CFE_TIME_ClockState_Enum_t in cmd/tlm and handling
- nasa/cFE#1995, Consolidate repeated MSG stub setup in sb_UT
- nasa/cFE#1873, Return type conversions in CFE_ES_GetTaskName
- nasa/cFE#1966, Better message type pointer conversion
- nasa/cFE#2002, Replacing hardcoded message limit in TIME services
- nasa/cFE#1909, Use macro in CFE_ResourceId_IsDefined
- nasa/cFE#1999, Checking against IsNewOffset only

- nasa/osal#1186, Add Duplicate Check to Local Unit Test
- nasa/osal#1178, Rename OS_XXXTime to OS_XXXLocalTime in comments
- nasa/osal#1168, Fix vxWorks intLib stub aliasing issue
- nasa/osal#1169, Recognize ifdef __cplusplus
- nasa/osal#1180, Remove extern in stub prototypes
- nasa/osal#1112, Add typedef for OSAL status codes

- nasa/PSP#301, Sleep before exit when printing
- nasa/PSP#314, Check the address in PSP get segment stubs

- nasa/elf2cfetbl#89, Check get_sh_entsize(SectionHeader) value

- nasa/cFS-GroundSystem#197, Free Address Info for Leak

- nasa/sch_lab#95, use separate address variable

- nasa/sch_lab#94, Use CFE_MSG_PTR conversion macro
- nasa/sample_app#157, Use CFE_MSG_PTR conversion macro
- nasa/ci_lab#95, Use CFE_MSG_PTR conversion macro
- nasa/to_lab#107, Use CFE_MSG_PTR conversion macro

- nasa/elf2cfetbl#93, Check get_sh_entsize(SectionHeader) value

Co-authored by: Jacob Hageman <[email protected]>
Co-authored by: Joseph Hickey <[email protected]>
Co-authored by: Ariel Adams <[email protected]>

Co-authored by: Paul <[email protected]>
Co-authored by: Zachary Gonzalez <[email protected]>
Co-authored by: Sam Price <[email protected]>
Co-authored by: Shefali Sharma <[email protected]>
astrogeco added a commit to astrogeco/cFS that referenced this pull request Nov 18, 2021
Combines:

nasa/cFE#2001
nasa/osal#1191
nasa/PSP#318

Includes:

- nasa/cFE#1663, Use cfe time clock state enum t in cmd/tlm and handling
- nasa/cFE#1973, EVS functional test add for different event types
- nasa/cFE#1954, Patch for recursive event loop
- nasa/cFE#1911, CFE_ES_MemAddOff structure to associated CFE_ES_MemAddress_t and CFE_ES_MemOffset_t
- nasa/cFE#1986, Avoid aliasing warnings
- nasa/cFE#1975, Message ID type improvements
- nasa/cFE#1974, CFE_SB_ValueToMsgId/MsgIdToValue wrappers
- nasa/cFE#1663, Use CFE_TIME_ClockState_Enum_t in cmd/tlm and handling
- nasa/cFE#1995, Consolidate repeated MSG stub setup in sb_UT
- nasa/cFE#1873, Return type conversions in CFE_ES_GetTaskName
- nasa/cFE#1966, Better message type pointer conversion
- nasa/cFE#2002, Replacing hardcoded message limit in TIME services
- nasa/cFE#1909, Use macro in CFE_ResourceId_IsDefined
- nasa/cFE#1999, Checking against IsNewOffset only

- nasa/osal#1186, Add Duplicate Check to Local Unit Test
- nasa/osal#1178, Rename OS_XXXTime to OS_XXXLocalTime in comments
- nasa/osal#1168, Fix vxWorks intLib stub aliasing issue
- nasa/osal#1169, Recognize ifdef __cplusplus
- nasa/osal#1180, Remove extern in stub prototypes
- nasa/osal#1112, Add typedef for OSAL status codes

- nasa/PSP#301, Sleep before exit when printing
- nasa/PSP#314, Check the address in PSP get segment stubs

- nasa/elf2cfetbl#89, Check get_sh_entsize(SectionHeader) value

- nasa/cFS-GroundSystem#197, Free Address Info for Leak

- nasa/sch_lab#95, use separate address variable

- nasa/sch_lab#94, Use CFE_MSG_PTR conversion macro
- nasa/sample_app#157, Use CFE_MSG_PTR conversion macro
- nasa/ci_lab#95, Use CFE_MSG_PTR conversion macro
- nasa/to_lab#107, Use CFE_MSG_PTR conversion macro

- nasa/elf2cfetbl#93, Check get_sh_entsize(SectionHeader) value

Co-authored-by: Jacob Hageman <[email protected]>
Co-authored-by: Joseph Hickey <[email protected]>
Co-authored-by: Ariel Adams <[email protected]>
Co-authored-by: Paul <[email protected]>
Co-authored-by: Zachary Gonzalez <[email protected]>
Co-authored-by: Sam Price <[email protected]>
Co-authored-by: Shefali Sharma <[email protected]>
astrogeco added a commit to astrogeco/cFS that referenced this pull request Nov 18, 2021
Combines:

nasa/cFE#2001
nasa/osal#1191
nasa/PSP#318

Includes:

- nasa/cFE#1663, Use cfe time clock state enum t in cmd/tlm and handling
- nasa/cFE#1973, EVS functional test add for different event types
- nasa/cFE#1954, Patch for recursive event loop
- nasa/cFE#1911, CFE_ES_MemAddOff structure to associated CFE_ES_MemAddress_t and CFE_ES_MemOffset_t
- nasa/cFE#1986, Avoid aliasing warnings
- nasa/cFE#1975, Message ID type improvements
- nasa/cFE#1974, CFE_SB_ValueToMsgId/MsgIdToValue wrappers
- nasa/cFE#1663, Use CFE_TIME_ClockState_Enum_t in cmd/tlm and handling
- nasa/cFE#1995, Consolidate repeated MSG stub setup in sb_UT
- nasa/cFE#1873, Return type conversions in CFE_ES_GetTaskName
- nasa/cFE#1966, Better message type pointer conversion
- nasa/cFE#2002, Replacing hardcoded message limit in TIME services
- nasa/cFE#1909, Use macro in CFE_ResourceId_IsDefined
- nasa/cFE#1999, Checking against IsNewOffset only

- nasa/osal#1186, Add Duplicate Check to Local Unit Test
- nasa/osal#1178, Rename OS_XXXTime to OS_XXXLocalTime in comments
- nasa/osal#1168, Fix vxWorks intLib stub aliasing issue
- nasa/osal#1169, Recognize ifdef __cplusplus
- nasa/osal#1180, Remove extern in stub prototypes
- nasa/osal#1112, Add typedef for OSAL status codes

- nasa/PSP#301, Sleep before exit when printing
- nasa/PSP#314, Check the address in PSP get segment stubs

- nasa/elf2cfetbl#89, Check get_sh_entsize(SectionHeader) value

- nasa/cFS-GroundSystem#197, Free Address Info for Leak

- nasa/sch_lab#95, use separate address variable

- nasa/sch_lab#94, Use CFE_MSG_PTR conversion macro
- nasa/sample_app#157, Use CFE_MSG_PTR conversion macro
- nasa/ci_lab#95, Use CFE_MSG_PTR conversion macro
- nasa/to_lab#107, Use CFE_MSG_PTR conversion macro

- nasa/elf2cfetbl#93, Check get_sh_entsize(SectionHeader) value

Co-authored-by: Jacob Hageman <[email protected]>
Co-authored-by: Joseph Hickey <[email protected]>
Co-authored-by: Ariel Adams <[email protected]>
Co-authored-by: Paul <[email protected]>
Co-authored-by: Zachary Gonzalez <[email protected]>
Co-authored-by: Sam Price <[email protected]>
Co-authored-by: Shefali Sharma <[email protected]>
astrogeco added a commit to astrogeco/cFS that referenced this pull request Nov 18, 2021
Combines:

nasa/cFE#2001
nasa/osal#1191
nasa/PSP#318

Includes:

- nasa/cFE#1663, Use cfe time clock state enum t in cmd/tlm and handling
- nasa/cFE#1973, EVS functional test add for different event types
- nasa/cFE#1954, Patch for recursive event loop
- nasa/cFE#1911, CFE_ES_MemAddOff structure to associated CFE_ES_MemAddress_t and CFE_ES_MemOffset_t
- nasa/cFE#1986, Avoid aliasing warnings
- nasa/cFE#1975, Message ID type improvements
- nasa/cFE#1974, CFE_SB_ValueToMsgId/MsgIdToValue wrappers
- nasa/cFE#1663, Use CFE_TIME_ClockState_Enum_t in cmd/tlm and handling
- nasa/cFE#1995, Consolidate repeated MSG stub setup in sb_UT
- nasa/cFE#1873, Return type conversions in CFE_ES_GetTaskName
- nasa/cFE#1966, Better message type pointer conversion
- nasa/cFE#2002, Replacing hardcoded message limit in TIME services
- nasa/cFE#1909, Use macro in CFE_ResourceId_IsDefined
- nasa/cFE#1999, Checking against IsNewOffset only

- nasa/osal#1186, Add Duplicate Check to Local Unit Test
- nasa/osal#1178, Rename OS_XXXTime to OS_XXXLocalTime in comments
- nasa/osal#1168, Fix vxWorks intLib stub aliasing issue
- nasa/osal#1169, Recognize ifdef __cplusplus
- nasa/osal#1180, Remove extern in stub prototypes
- nasa/osal#1112, Add typedef for OSAL status codes

- nasa/PSP#301, Sleep before exit when printing
- nasa/PSP#314, Check the address in PSP get segment stubs

- nasa/elf2cfetbl#89, Check get_sh_entsize(SectionHeader) value

- nasa/cFS-GroundSystem#197, Free Address Info for Leak

- nasa/sch_lab#95, use separate address variable

- nasa/sch_lab#94, Use CFE_MSG_PTR conversion macro
- nasa/sample_app#157, Use CFE_MSG_PTR conversion macro
- nasa/ci_lab#95, Use CFE_MSG_PTR conversion macro
- nasa/to_lab#107, Use CFE_MSG_PTR conversion macro

- nasa/elf2cfetbl#93, Check get_sh_entsize(SectionHeader) value

Co-authored-by: Jacob Hageman       <[email protected]>
Co-authored-by: Joseph Hickey       <[email protected]>
Co-authored-by: Ariel Adams         <[email protected]>
Co-authored-by: Paul                <[email protected]>
Co-authored-by: Zachary Gonzalez    <[email protected]>
Co-authored-by: Sam Price           <[email protected]>
Co-authored-by: Shefali Sharma      <[email protected]>
astrogeco added a commit to nasa/cFS that referenced this pull request Nov 18, 2021
Combines:

nasa/cFE#2001
nasa/osal#1191
nasa/PSP#318

Includes:

- nasa/cFE#1663, Use cfe time clock state enum t in cmd/tlm and handling
- nasa/cFE#1973, EVS functional test add for different event types
- nasa/cFE#1954, Patch for recursive event loop
- nasa/cFE#1911, CFE_ES_MemAddOff structure to associated CFE_ES_MemAddress_t and CFE_ES_MemOffset_t
- nasa/cFE#1986, Avoid aliasing warnings
- nasa/cFE#1975, Message ID type improvements
- nasa/cFE#1974, CFE_SB_ValueToMsgId/MsgIdToValue wrappers
- nasa/cFE#1663, Use CFE_TIME_ClockState_Enum_t in cmd/tlm and handling
- nasa/cFE#1995, Consolidate repeated MSG stub setup in sb_UT
- nasa/cFE#1873, Return type conversions in CFE_ES_GetTaskName
- nasa/cFE#1966, Better message type pointer conversion
- nasa/cFE#2002, Replacing hardcoded message limit in TIME services
- nasa/cFE#1909, Use macro in CFE_ResourceId_IsDefined
- nasa/cFE#1999, Checking against IsNewOffset only

- nasa/osal#1186, Add Duplicate Check to Local Unit Test
- nasa/osal#1178, Rename OS_XXXTime to OS_XXXLocalTime in comments
- nasa/osal#1168, Fix vxWorks intLib stub aliasing issue
- nasa/osal#1169, Recognize ifdef __cplusplus
- nasa/osal#1180, Remove extern in stub prototypes
- nasa/osal#1112, Add typedef for OSAL status codes

- nasa/PSP#301, Sleep before exit when printing
- nasa/PSP#314, Check the address in PSP get segment stubs

- nasa/elf2cfetbl#89, Check get_sh_entsize(SectionHeader) value

- nasa/cFS-GroundSystem#197, Free Address Info for Leak

- nasa/sch_lab#95, use separate address variable

- nasa/sch_lab#94, Use CFE_MSG_PTR conversion macro
- nasa/sample_app#157, Use CFE_MSG_PTR conversion macro
- nasa/ci_lab#95, Use CFE_MSG_PTR conversion macro
- nasa/to_lab#107, Use CFE_MSG_PTR conversion macro

- nasa/elf2cfetbl#93, Check get_sh_entsize(SectionHeader) value

Co-authored-by: Jacob Hageman       <[email protected]>
Co-authored-by: Joseph Hickey       <[email protected]>
Co-authored-by: Ariel Adams         <[email protected]>
Co-authored-by: Paul                <[email protected]>
Co-authored-by: Zachary Gonzalez    <[email protected]>
Co-authored-by: Sam Price           <[email protected]>
Co-authored-by: Shefali Sharma      <[email protected]>
astrogeco added a commit to astrogeco/cFS that referenced this pull request Nov 18, 2021
Combines:

nasa/cFE#2001
nasa/osal#1191
nasa/PSP#318

nasa/ci_lab#101
nasa/sch_lab#102
nasa/to_lab#112
nasa/sample_app#163
nasa/cFS-GroundSystem#201
nasa/elf2cfetbl#98

Includes:

*cFE*

- nasa/cFE#1663, Use cfe time clock state enum t in cmd/tlm and handling
- nasa/cFE#1973, EVS functional test add for different event types
- nasa/cFE#1954, Patch for recursive event loop
- nasa/cFE#1911, CFE_ES_MemAddOff structure to associated CFE_ES_MemAddress_t and CFE_ES_MemOffset_t
- nasa/cFE#1986, Avoid aliasing warnings
- nasa/cFE#1975, Message ID type improvements
- nasa/cFE#1974, CFE_SB_ValueToMsgId/MsgIdToValue wrappers
- nasa/cFE#1663, Use CFE_TIME_ClockState_Enum_t in cmd/tlm and handling
- nasa/cFE#1995, Consolidate repeated MSG stub setup in sb_UT
- nasa/cFE#1873, Return type conversions in CFE_ES_GetTaskName
- nasa/cFE#1966, Better message type pointer conversion
- nasa/cFE#2002, Replacing hardcoded message limit in TIME services
- nasa/cFE#1909, Use macro in CFE_ResourceId_IsDefined
- nasa/cFE#1999, Checking against IsNewOffset only

*osal*

- nasa/osal#1186, Add Duplicate Check to Local Unit Test
- nasa/osal#1178, Rename OS_XXXTime to OS_XXXLocalTime in comments
- nasa/osal#1168, Fix vxWorks intLib stub aliasing issue
- nasa/osal#1169, Recognize ifdef __cplusplus
- nasa/osal#1180, Remove extern in stub prototypes
- nasa/osal#1112, Add typedef for OSAL status codes

*PSP*

- nasa/PSP#301, Sleep before exit when printing
- nasa/PSP#314, Check the address in PSP get segment stubs

*Tools*

- nasa/elf2cfetbl#89, Check get_sh_entsize(SectionHeader) value
- nasa/elf2cfetbl#93, Check get_sh_entsize(SectionHeader) value
- nasa/cFS-GroundSystem#197, Free Address Info for Leak

*Apps*

- nasa/sch_lab#95, use separate address variable
- nasa/sch_lab#94, Use CFE_MSG_PTR conversion macro
- nasa/sample_app#157, Use CFE_MSG_PTR conversion macro
- nasa/ci_lab#95, Use CFE_MSG_PTR conversion macro
- nasa/to_lab#107, Use CFE_MSG_PTR conversion macro

Co-authored-by: Jacob Hageman       <[email protected]>
Co-authored-by: Joseph Hickey       <[email protected]>
Co-authored-by: Ariel Adams         <[email protected]>
Co-authored-by: Paul                <[email protected]>
Co-authored-by: Zachary Gonzalez    <[email protected]>
Co-authored-by: Sam Price           <[email protected]>
Co-authored-by: Shefali Sharma      <[email protected]>
@astrogeco astrogeco merged commit dd62c2e into nasa:main Dec 6, 2021
@jphickey jphickey deleted the fix-1952-recursive-event branch January 18, 2022 19:50
@skliper skliper added this to the Draco milestone Mar 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CCB:Approved Indicates code review and approval by community CCB draco-rc1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Potential for recursive loop if Event TLM MsgId is incorrect
3 participants